Skeletal animation is a computer animation technique that represents an object in two primary parts: 1) a mesh that is a surface representation of the object, and 2) a set of interconnected joints (i.e., a rig) used to animate the mesh. Generally, a joint may refer to a bone and the pivot about which it rotates, or a joint may just refer to a pivot. Joints may be related in a hierarchy by joint transformations. Skeletal animation may be applied to transform any object that implements this mesh and rig structure. For example, it may be applied to a whole or a part (e.g., arm, leg, hand, foot, torso) of an animated character, creature, or similar object. Alternatively, it may be applied to animations of other objects, such as clothing, a door, a fork, etc.
During animation, a rig may be represented as a set of nodes of a node graph (e.g., a directed acyclic graph), each node having corresponding input and output attributes. The attributes of a node describe its data, with each node type having a different set of attributes. For example, the nodes associated with an animating sphere may comprise attributes such as radius, angular momentum, position, color, and transparency. During animation of a rig, all or a subset of the rig's nodes are evaluated as data flows. The processed node graph data is visually rendered as a static image or animated scene on a display via a viewport.
Animation rigs used in film productions have become very complex. In many cases, these rigs comprise tens of thousands of nodes, each node being associated with many input attributes and/or computationally expensive operations. Such rigs can generate very appealing shape deformation on computer-generated imagery (CGI) characters. However, rig performance (i.e., speed) suffers when the complexity of the rig increases.